// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  console.log('[getUserInfo] 开始获取用户信息:', event);

  // 先获取当前用户的openid
  const wxContext = cloud.getWXContext();
  const currentOpenid = wxContext.OPENID;

  // 确定要查询的用户ID
  const targetOpenid = event.openid || currentOpenid;

  if (!targetOpenid) {
    console.error('[getUserInfo] 无法获取用户openid');
    return {
      success: false,
      error: '无法获取用户身份信息'
    };
  }

  try {
    // 查询用户信息
    const userRes = await db.collection('users').where({
      openid: targetOpenid
    }).get();

    if (userRes.data.length === 0) {
      console.error('[getUserInfo] 用户不存在:', targetOpenid);
      return {
        success: false,
        error: '用户不存在'
      };
    }

    // 获取用户数据
    const userData = userRes.data[0];

    // 查询用户的订单数量统计
    const orderStats = await getOrderStats(targetOpenid);

    // 合并返回结果
    return {
      success: true,
      userData: userData,
      orderStats: orderStats
    };
  } catch (error) {
    console.error('[getUserInfo] 获取用户信息失败:', error);
    return {
      success: false,
      error: error.message || '获取用户信息失败'
    };
  }
}

/**
 * 获取用户订单统计
 * @param {string} openid - 用户openid
 * @returns {Object} 订单统计信息
 */
async function getOrderStats(openid) {
  try {
    // 统计各状态订单数量
    const stats = {
      total: 0,
      pendingPayment: 0, // 待付款
      pendingPickup: 0,   // 待取货/配送中
      completed: 0,       // 已完成
      cancelled: 0        // 已取消
    };

    // 获取用户所有订单
    const orderRes = await db.collection('orders')
      .where({ openid: openid })
      .get();

    if (orderRes.data.length === 0) {
      return stats;
    }

    // 更新统计数据
    stats.total = orderRes.data.length;

    // 统计各状态订单
    orderRes.data.forEach(order => {
      if (order.status === 'pending') {
        stats.pendingPayment++;
      } else if (order.status === 'paid') {
        stats.pendingPickup++;
      } else if (order.status === 'completed') {
        stats.completed++;
      } else if (order.status === 'cancelled') {
        stats.cancelled++;
      }
    });

    return stats;
  } catch (error) {
    console.error('[getUserInfo] 获取订单统计失败:', error);
    return {
      total: 0,
      pendingPayment: 0,
      pendingPickup: 0,
      completed: 0,
      cancelled: 0
    };
  }
} 